MOS 6502
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
MOS 6502는 1975년 MOS Technology에서 출시한 8비트 마이크로프로세서로, 애플 I, 애플 II, 코모도어 PET 등 초기 가정용 컴퓨터와 게임기에 널리 사용되었다. 6800 마이크로프로세서의 설계를 기반으로, 저렴한 가격과 간결한 설계를 특징으로 하며, NMOS 공정을 사용했다. 6502는 다양한 변형을 거쳐 6507, 6510, 65C02 등으로 발전했으며, 닌텐도 패미컴과 같은 게임기에도 사용되었다. 8비트 CPU로 16비트 주소 버스를 가지며, 8비트 누산기, 인덱스 레지스터, 스택 포인터 등을 포함한 레지스터 세트를 가지고 있다. 다양한 어드레싱 모드를 지원하며, 간단한 파이프라인과 조합 논리를 사용하여 빠른 성능을 제공한다.
더 읽어볼만한 페이지
- 컴퓨터 하드웨어에 관한 - 암호화
암호화는 정보를 보호하기 위해 사용되는 기술로서, 단순한 문자 치환 방식에서 시작하여 현대에는 강력한 암호화 표준과 다양한 종류로 발전했으며, IT 시스템 전반에 적용되지만, 사이버 공격과 양자 컴퓨팅의 발전에 대한 대응이 필요한 기술이다. - 컴퓨터 하드웨어에 관한 - 페데리코 파진
- 65xx 마이크로프로세서 - 리코 5A22
리코 5A22는 65C816 코어를 기반으로 슈퍼 패미컴에 사용된 프로세서로, 컨트롤러 포트 인터페이스, 인터럽트 생성 회로, DMA 기능, 곱셈 및 나눗셈 연산을 위한 레지스터 등을 포함하며, 두 개의 개별 주소 버스로 제어되는 8비트 데이터 버스를 특징으로 한다. - 65xx 마이크로프로세서 - WDC 65C02
WDC 65C02는 6502의 저전력 CMOS 버전으로, 버그 수정, 명령어 추가, 성능 개선이 이루어진 8비트 마이크로프로세서이다. - 8비트 마이크로프로세서 - 인텔 8080
인텔이 1974년에 출시한 8비트 마이크로프로세서인 인텔 8080은 8008의 후속 제품으로서 성능과 기능 향상을 통해 초기 마이크로컴퓨터 시장 성장을 이끌었으며, 64KB 메모리 공간 지원, 다양한 애플리케이션 구현, CP/M 운영체제 핵심 프로세서 역할 수행, 후속 x86 아키텍처 기반 마련 등 중요한 역할을 수행했다. - 8비트 마이크로프로세서 - 인텔 8008
인텔 8008은 1972년 인텔이 출시한 8비트 마이크로프로세서로, 데이터포인트 3300 터미널용으로 구상되었으나 인텔이 지적 재산을 인수하여 상업적 성공을 거두며 인텔 8080과 x86 제품군의 발판이 되고 최초의 상업용 개인용 컴퓨터에 사용되었다.
| MOS 6502 | |
|---|---|
| 기본 정보 | |
![]() | |
| 생산 시작 | 1975년 |
| 제조사 | 모스 테크놀로지, 로크웰, 시너텍 |
| 최저 속도 | 1 |
| 최고 속도 | 3 |
| 최저 속도 단위 | MHz |
| 최고 속도 단위 | MHz |
| 트랜지스터 수 | 3,510, 3,218 |
| 명령어 수 | 56 (원래 55개) |
| 데이터 폭 | 8비트 |
| 주소 폭 | 16비트 |
| 패키지 | 40핀 DIP |
| 이전 모델 | 모토로라 6800 MOS 6501 |
| 후속 모델 | MOS 6510 WDC 65C02 WDC 65C816 |
| 아키텍처 | MOS 6502 |
2. 역사 및 사용
MOS 테크놀로지 6502는 모토로라 6800 마이크로프로세서 계열을 설계한 엔지니어들이 개발했다.[5] 1971년 모토로라는 톰 베넷을 중심으로 6800 프로젝트를 시작했고, 1974년 11월에 전체 제품군을 공식 출시했다.[7][8]
6800 칩 설계자 존 부캐넌(John Buchanan)[9][10]과 6501을 설계한 로드 오르길(Rod Orgill)은 회로 분석과 칩 레이아웃을 담당했다.[11] 빌 멘슈(Bill Mensch)는 1971년 6월 모토로라에 합류하여 6800 계열 주변 IC 정의를 돕고, 6820 PIA의 주요 설계자가 되었다.[12][13] 척 페들(Chuck Peddle)은 1973년에 고용되어 6800 계열 제품 설계 지원 및 6850 ACIA(직렬 인터페이스) 설계에 기여했다.[14][15]
모토로라는 휴렛 팩커드(Hewlett-Packard), 텍트로닉스(Tektronix), TRW, 크라이슬러(Chrysler)와 같은 기존 전자 회사를 주요 고객으로 삼았다.[16] 1972년 5월부터 고객들을 방문하여 8비트 마이크로프로세서 시스템에 대한 세부 정보를 공유했고,[17] 1974년 초에는 엔지니어링 샘플을 제공했다. 모토로라는 마이크로프로세서 가격뿐만 아니라 고객의 총 설계 비용 절감에 초점을 맞춘 "총 제품 계열" 전략을 펼쳤다.[18][19]
고객 방문에 동행했던 페들은 고객들이 마이크로프로세서 칩의 높은 비용에 꺼리는 것을 발견했다. 이러한 방문을 통해 엔지니어들은 6800에 포함된 명령어보다 훨씬 작은 필수 명령어 목록을 생성했다. 페들과 팀원들은 향상된 기능을 갖춘 더 작은 마이크로프로세서 설계를 구상했다. 그러나 모토로라 경영진은 페들의 저가형 마이크로프로세서 제안에 관심을 보이지 않았고, 결국 페들은 시스템 작업을 중단하라는 공식 편지를 받았다. 페들은 모토로라에 프로젝트 포기를 알리고, 자신이 개발한 지적 재산은 자신의 것이라고 통보했다.
페들은 모토로라 외부에서 자금 조달을 모색했고, MOS 테크놀로지(MOS Technology)에 합류했다. 1974년 8월, 척 페들, 빌 멘슈, 로드 오르길 등 8명이 모토로라를 떠나 MOS에 합류했다. 이 팀은 임베디드 애플리케이션을 위한 저가형 마이크로프로세서를 설계 및 생산하고, 광범위한 고객 기반을 목표로 했다.
6502는 애플 I를 시작으로, 코모도어 PET, 애플 II, 애타리 8비트 컴퓨터, BBC 마이크로 등 다양한 초기 가정용 컴퓨터에 사용되었다. 또한 패미컴과 같은 게임기에도 사용되었다.
| -- | -- | -- | -- | -- |
![]() | ![]() | ![]() | ![]() | ![]() |
| -- | -- | -- | -- | ![]() |
![]() | -- | ![]() | ![]() | -- |
| -- | -- | -- | ![]() |
2. 1. 모토로라에서의 기원
모토로라 6800 마이크로프로세서 계열을 설계한 엔지니어들이 6502를 설계했다.[5] 1971년, 모토로라는 톰 베넷을 중심으로 6800 마이크로프로세서 프로젝트를 시작했다. 모토로라 엔지니어들은 IBM 370-165 메인프레임 컴퓨터에서 시뮬레이션을 할 수 있었다.[6] 1972년 말에 칩 레이아웃이 시작되었고, 1974년 2월에 최초의 6800 칩이 제작되었으며, 1974년 11월에 전체 제품군이 공식 출시되었다.[7][8]
존 부캐넌은 6800 칩의 설계자였다.[9][10] 로드 오르길은 나중에 6501을 설계했으며, 회로 분석과 칩 레이아웃에서 부캐넌을 도왔다.[11] 빌 멘슈(Bill Mensch)는 1971년 6월 모토로라에 합류하여 6800 계열의 주변 IC 정의를 돕고, 6820 PIA의 주요 설계자가 되었다.[12][13] 1973년, 척 페들(Chuck Peddle)은 6800 계열 제품 설계 지원 작업을 위해 고용되어 6850 ACIA(직렬 인터페이스) 설계 등에 기여했다.[14][15]
모토로라는 휴렛 팩커드(Hewlett-Packard), 텍트로닉스(Tektronix), TRW, 크라이슬러(Chrysler) 등 기존 전자 회사들을 주요 고객으로 삼았다.[16] 1972년 5월부터 모토로라 엔지니어들은 고객들을 방문하여 8비트 마이크로프로세서 시스템에 대한 세부 정보를 공유했다.[17] 1974년 초에는 고객들이 설계를 시제품으로 만들 수 있도록 칩의 엔지니어링 샘플을 제공했다. 모토로라는 마이크로프로세서 가격보다는 고객의 총 설계 비용 절감에 초점을 맞춘 "총 제품 계열" 전략을 펼쳤다. 개발 소프트웨어, "EXORciser" 디버깅 시스템, 현장 교육 및 지원을 제공했다.[18][19] 인텔과 모토로라는 처음에 단일 마이크로프로세서 가격을 로 발표했지만,[20][21] 실제 가격은 훨씬 낮았다. 모토로라는 6개의 지원 칩이 포함된 6800 설계 키트를 에 제공했다.[22]
고객 방문에 동행했던 페들은 고객들이 마이크로프로세서 칩의 높은 비용에 꺼리는 것을 발견했다. 동시에, 6800에 포함된 명령어보다 훨씬 작은 필수 명령어 목록이 생성되었다. 페들과 팀원들은 향상된 기능, 크기가 줄어든 마이크로프로세서 설계를 시작했다. 그러나 당시 모토로라의 새로운 반도체 제조 시설은 MOS 칩 생산에 어려움을 겪었고, 반도체 산업 불황과 애리조나주 메사 직원들의 오스틴 이전 불만 등 여러 문제가 있었다.[23]
모토로라 경영진은 페들의 저가형 마이크로프로세서 제안에 관심이 없었고, 결국 페들은 시스템 작업을 중단하라는 편지를 받았다. 페들은 이 편지가 "프로젝트 포기"를 의미한다고 모토로라에 알리고, 자신이 개발한 지적 재산은 자신의 것이 되었다. 1975년 11월 인터뷰에서 모토로라 회장 로버트 갤빈은 페들의 개념이 좋았고 사업부가 기회를 놓쳤다고 인정했다. 사업부는 재편되었고, 새로운 그룹 부사장 존 웰티는 "반도체 영업 조직이 고객 요구에 대한 민감성을 잃었고 신속한 결정을 내릴 수 없었다"고 말했다.[24]
2. 2. MOS 테크놀로지

척 페들(Chuck Peddle)은 새로운 프로젝트의 자금 조달을 위해 모토로라 외부를 찾기 시작했다. 그는 처음에 모스텍(Mostek)의 CEO인 L. J. 세빈(Sevin)에게 접근했지만 거절당했다. 세빈은 나중에 모토로라가 소송을 제기할까 봐 두려웠기 때문이라고 시인했다.
페들은 영업 여행 중 포드 자동차(Ford Motor Company)를 방문했을 때, 나중에 포드의 엔진 자동화 부서장이 된 밥 존슨(Bob Johnson)으로부터 그들의 전 동료인 존 파이비넨(John Paivinen)이 제너럴 인스트루먼트(General Instrument)로 이동하여 반도체 설계를 독학했다는 이야기를 들었다. 파이비넨은 1969년 제너럴 인스트루먼트의 다른 두 임원인 모트 자페(Mort Jaffe)와 돈 맥러플린(Don McLaughlin)과 함께 펜실베이니아주 밸리 포지(Valley Forge, Pennsylvania)에 MOS 테크놀로지(MOS Technology)를 설립했다.[25] 이 회사는 고객을 위해 맞춤형 IC를 설계 및 제작했으며 계산기 칩 라인을 개발했다.[26]
모스텍(Mostek)과의 노력이 실패한 후, 페들은 파이비넨에게 접근했고, 파이비넨은 "즉시 이해했다". 1974년 8월 19일, 척 페들, 빌 멘슈(Bill Mensch), 로드 오르길(Rod Orgill), 해리 보컴(Harry Bawcom), 레이 허트(Ray Hirt), 테리 홀트(Terry Holdt), 윌 매시스(Wil Mathys)는 모토로라를 떠나 MOS에 합류했다. 마이크 제인스(Mike Janes)는 나중에 합류했다. 6800 팀의 17명의 칩 설계자와 레이아웃 담당자 중 8명이 떠났다. 팀의 목표는 임베디드 애플리케이션을 위한 저가형 마이크로프로세서를 설계 및 생산하고 가능한 한 광범위한 고객 기반을 목표로 하는 것이었다. 이것은 마이크로프로세서의 가격이 저렴해야만 가능했으며, 팀은 대량 구매 가격 목표를 로 설정했다. 멘슈는 나중에 목표가 프로세서 가격 자체가 아니라 최근에 출시된 유사한 완전한 칩셋으로 에 판매되는 인텔 4040과 경쟁하기 위해 에 판매될 수 있는 칩셋을 만드는 것이었다고 말했다.[27]
칩은 매우 순수한 실리콘으로 만들어진 얇은 원반인 웨이퍼(wafer) 표면에 여러 개의 칩 설계 복사본을 인쇄하여 생산된다. 더 작은 칩은 같은 웨이퍼에 더 많은 수로 인쇄할 수 있으므로 상대적인 가격이 낮아진다. 또한 웨이퍼에는 항상 표면에 산재해 있는 수많은 미세한 물리적 결함이 포함되어 있다. 그 위치에 인쇄된 칩은 모두 고장 나서 버려야 한다. 더 작은 칩은 단일 복사본이 결함에 인쇄될 가능성이 적다는 것을 의미한다. 이 두 가지 이유로 최종 제품의 비용은 칩 설계 크기에 크게 의존한다.[28]
원래 6800 칩은 이 되도록 설계되었지만, 레이아웃은 또는 의 면적으로 완료되었다.[29] 새로운 설계의 경우, 비용 목표는 또는 의 면적 목표를 요구했다. 이 목표를 달성하려면 몇 가지 새로운 기술이 필요할 것이다.
모스테크놀로지는 모토로라에서 스핀오프한 팀으로, 초기 발표한 MCS6501에서 발생한 모토로라와의 특허 분쟁(핀 배열이 완벽하게 호환되었던 문제)으로 인해 1976년 자금난을 겪어 코모도어 산하의 코모도어 세미컨덕터 그룹(CSG)이 되었지만, IC 마킹에는 MOS 브랜드가 한동안 사용되었다. 동사는 1994년 코모도어와 함께 도산하였다(모스테크놀로지社는 모스텍(Mostek)社와는 다른 회사이다). 세컨드소스는 여러 회사가 있었는데, 록웰 인터내셔널(Rockwell International)社나 웨스턴 디자인 센터(Western Design Center, 1977년 모스테크놀로지의 멤버가 스핀오프한 회사), Synertek, GTE 등이 있으며, 모스테크놀로지를 계승하는 형태가 되었다.
처음에는 NMOS 공정으로 생산되었지만, 후에 록웰과 웨스턴 디자인 센터에서 CMOS 버전의 '''65C02'''가 등장했다. 65C02에서는 STZ(값 $00 저장)나 BRA(무조건 상대 분기)와 같은 명령어가 추가되었고, 6502에 있던 버그가 수정되었지만, 만들어진 65C02의 확장 명령어 코드는 양쪽이 달랐다.
주변 칩으로는, 6502의 타이밍에 맞춘 6521(6821 호환) PIA나 6522, 6551(ACIA) 등이 준비되어 있었다.
2. 3. NMOS로의 전환
6502 설계 당시 시장에는 두 가지 중요한 발전이 나타나 상당한 비용 절감으로 이어졌다. 첫 번째는 고갈형 부하 NMOS로의 전환이었다. 6800은 초기 NMOS 공정(증강형)을 사용했는데, 이는 세 가지 전원 전압을 필요로 했다. 6800의 주요 특징 중 하나는 내부적으로 +5V, −5V, +12V를 사용할 수 있도록 하는 온보드 전압 승압기였는데, 이는 인텔 8080과 같은 당시의 다른 칩들과 달리 세 개의 별도 전원 핀을 필요로 하지 않았다.[30] 이 기능은 전원 공급 장치와 핀 배치의 복잡성을 줄였지만, 여전히 칩의 다양한 게이트에 별도의 전원 라인을 필요로 하여 복잡성과 크기가 증가했다. 새로운 고갈형 부하 설계로 전환함으로써, 단일 +5V 전원 공급 장치만으로 충분해져 이러한 모든 복잡성이 제거되었다.고갈형 부하 설계는 스위칭 시 전력 소모량이 적어 발열이 적고 더 높은 동작 속도를 허용한다는 장점이 있었다. 또한, 초기 CPU의 클럭 신호는 회로를 통과하는 동안 발생하는 모든 소산을 견딜 수 있을 만큼 강력해야 했는데, 이는 거의 항상 강력한 신호를 공급할 수 있는 별도의 외부 칩을 필요로 했다. 고갈형 부하 설계의 전력 요구 사항이 감소함에 따라 클럭을 칩으로 이동할 수 있어 전체적인 컴퓨터 설계가 간소화되었다. 이러한 변화는 복잡성과 완벽한 시스템을 구현하는 비용을 크게 줄였다.
업계에서 일어나고 있는 더 광범위한 변화는 프로젝션 마스크의 도입이었다. 이전에는 웨이퍼 표면에 마스크를 놓고 밝은 빛을 비춰 웨이퍼 표면에 칩 패턴을 새겼다. 마스크는 종종 칩에서 들어 올릴 때 미세한 먼지나 포토레지스트를 흡착하여 후속 마스킹 작업 시 해당 위치에 결함이 발생했다. CPU와 같은 복잡한 설계의 경우 5~6개의 마스킹 단계가 사용되었으며, 이 중 적어도 하나에 결함이 발생할 가능성이 매우 높았다. 대부분의 경우 이러한 설계의 90%가 결함이 있어 수율이 10%였다. 작동하는 제품의 가격은 버려진 90%의 생산 비용을 충당해야 했다.[31]
1973년, 퍼킨엘머는 마이크로알리그너 시스템을 도입했는데, 이 시스템은 마스크의 이미지를 웨이퍼에 직접 접촉시키는 대신 투영했다. 마스크는 더 이상 웨이퍼에서 먼지를 흡착하지 않았고, 10회가 아닌 10만 회 정도 사용할 수 있었다. 이로 인해 단계별 오류와 이전에 복잡한 설계에서 볼 수 있었던 높은 결함률이 제거되었다. CPU의 수율은 즉시 10%에서 60% 또는 70%로 증가했다. 이는 CPU의 가격이 거의 같은 비율로 하락했음을 의미하며, 마이크로프로세서는 갑자기 상품화되었다.[31]
MOS 테크놀로지의 기존 제조 라인은 이전의 PMOS 기술을 기반으로 했으며, 팀이 도착했을 때 아직 NMOS 작업을 시작하지 않았다. 파이비넨은 새로운 CPU 생산을 시작할 수 있도록 NMOS 라인을 제때 가동하겠다고 약속했다. 그는 약속을 지켰고, 새로운 라인은 1975년 6월에 준비되었다.[32]
2. 4. 설계 참고 사항
6502는 모토로라 6800 마이크로프로세서 계열을 설계했던 엔지니어들이 설계했다.[5] 모토로라는 1971년에 6800 마이크로프로세서 프로젝트를 시작했고, 1974년 11월에 전체 제품군을 공식 출시했다.[7][8]6800 칩 설계자인 존 부캐넌(John Buchanan)과[9][10] 6501을 설계한 로드 오르길(Rod Orgill)은 회로 분석과 칩 레이아웃에서 부캐넌을 도왔다.[11] 빌 멘슈(Bill Mensch)는 1971년 6월 모토로라에 합류하여 6800 계열 주변 IC 정의를 돕고, 6820 PIA의 주요 설계자가 되었다.[12][13] 척 페들(Chuck Peddle)은 1973년에 고용되어 6800 계열 제품 설계 지원 작업을 수행하고 6850 ACIA(직렬 인터페이스) 설계에 기여했다.[14][15]
모토로라는 휴렛 팩커드(Hewlett-Packard), 텍트로닉스(Tektronix), TRW, 크라이슬러(Chrysler)와 같은 기존 전자 회사를 목표 고객으로 삼았다.[16] 1972년 5월부터 고객들을 방문하여 8비트 마이크로프로세서 시스템에 대한 세부 정보를 공유했고,[17] 1974년 초에는 엔지니어링 샘플을 제공했다. 모토로라는 마이크로프로세서 가격뿐만 아니라 고객의 총 설계 비용을 줄이는 데 초점을 맞춘 "총 제품 계열" 전략을 사용했다.[18][19]
고객 방문에 동행했던 페들은 고객들이 마이크로프로세서 칩의 높은 비용에 꺼리는 것을 발견했다. 이러한 방문을 통해 엔지니어들은 6800에 포함된 명령어보다 훨씬 작은 필수 명령어 목록을 생성했다. 페들과 팀원들은 향상된 기능을 갖춘 더 작은 마이크로프로세서 설계를 구상했다. 그러나 모토로라 경영진은 페들의 저가형 마이크로프로세서 제안에 관심을 보이지 않았고, 결국 페들은 시스템 작업을 중단하라는 공식 편지를 받았다. 페들은 모토로라에 프로젝트 포기를 알리고, 자신이 개발한 지적 재산은 자신의 것이라고 통보했다.
페들은 모토로라 외부에서 자금 조달을 모색했고, MOS 테크놀로지(MOS Technology)에 합류했다. 1974년 8월, 척 페들, 빌 멘슈, 로드 오르길 등 8명이 모토로라를 떠나 MOS에 합류했다. 이 팀은 임베디드 애플리케이션을 위한 저가형 마이크로프로세서를 설계 및 생산하고, 광범위한 고객 기반을 목표로 했다.
칩 크기를 줄이기 위해 6502 설계에는 몇 가지 중요한 변경 사항이 적용되었다.
- 주소 버스 출력에서 삼상 드라이버 제거: 삼상 버스는 '1', '0', 고임피던스의 세 가지 상태를 가지며, 다중 처리나 직접 메모리 접근(DMA)에 사용된다. 6502는 간단한 장치와 통신하도록 설계되었기 때문에 이 기능을 제거했다.
- 레지스터 단순화: 두 개의 누산기 중 하나를 제거하고, 스택 레지스터를 16비트에서 8비트로 줄였다.
- 인덱스 레지스터 변경: 16비트 IX 인덱스 레지스터를 X와 Y로 분할하고, 접근 방식을 변경했다. 6800에서는 IX에 명령어와 함께 저장된 8비트 숫자를 오프셋으로 사용하여 주소를 더한 16비트 주소를 저장했지만, 6502에서는 16비트 기준 주소가 명령어에 저장되고 8비트 X 또는 Y가 추가되었다.
- 명령어 세트 단순화: 6800의 72개 명령어 중 56개를 구현하여 디코더와 제어 로직을 단순화했다.
칩의 상위 수준 설계는 트랜지스터와 상호 연결 도면으로 변환되었고, MOS 테크놀로지에서는 색연필과 벨럼 종이를 사용한 수동적인 프로세스로 "레이아웃"이 수행되었다. 멘슈(Mensch)와 파이비넨(Paivinen)은 명령어 디코더 작업을, 멘슈, 페들, 오르길은 ALU와 레지스터 작업을 했다. 파티에서 개발된 또 다른 발전은 일부 내부 배선을 공유하여 ALU의 크기를 줄이는 방법이었다.
최초의 6502 칩은 크기였다. 프로세서의 원래 버전에는 오른쪽 회전(ROR) 기능이 없었지만, 다음 설계 반복에서 칩 크기가 줄어들고 ROR 기능이 추가되었다.[34]
2. 5. 6501 및 6502 소개
MOS 테크놀로지는 6501과 6502 두 가지 마이크로프로세서를 출시했다. 6501은 모토로라 6800과 같은 소켓에 장착할 수 있었지만, 6502는 핀 배열을 재구성하여 온칩 클럭 발진기를 지원했다. 두 프로세서 모두 6800용으로 설계된 다른 지원 칩과 함께 작동했지만, 명령어 세트, 레지스터, 주소 지정 모드가 달랐기 때문에 6800 소프트웨어를 실행할 수 없었다.[3] 6501은 로드 오길(Rod Orgill)이 설계했으며, 그는 모토로라에서 존 뷰캐넌(John Buchanan)과 6800을 함께 설계했다. 빌 멘슈(Bill Mensch)는 6820 주변 인터페이스 어댑터(PIA)를 설계한 모토로라 출신으로, 6502를 설계했다. 해리 보컴(Harry Bawcom), 마이크 제인스(Mike Janes), 시드니 앤 홀트(Sydney-Anne Holt)가 레이아웃 작업에 참여했다.| 핀 | 6800 | 6501 | 6502 |
|---|---|---|---|
| 2 | 정지 | 준비 | 준비 |
| 3 | ∅1 (입력) | ∅1 (입력) | ∅1 (출력) |
| 5 | 유효 메모리 주소 | 유효 메모리 주소 | N.C. |
| 7 | 버스 사용 가능 | 버스 사용 가능 | 동기화 |
| 36 | 데이터 버스 활성화 | 데이터 버스 활성화 | N.C. |
| 37 | ∅2 (입력) | ∅2 (입력) | ∅0 (입력) |
| 38 | N.C. | N.C. | 오버플로우 플래그 설정 |
| 39 | 3상태 제어 | N.C. | ∅2 (출력) |
MOS 테크놀로지의 마이크로프로세서 출시는 기존과 달랐다. Chuck Peddle은 1975년 9월 WESCON 무역 박람회에서 첫 생산된 6501과 6502 칩을 판매하고자 했다. 그는 대변인 역할을 훌륭히 수행하여, MOS 테크놀로지의 마이크로프로세서는 업계 언론에서 광범위하게 다루어졌다. 초기 보도 중 하나는 1975년 7월 24일 ''Electronics'' 잡지에 실린 MCS6501 및 MCS6502 마이크로프로세서에 대한 전면 기사였다.[38] ''EE Times''(1975년 8월 24일),[39] ''EDN''(1975년 9월 20일), ''Electronic News''(1975년 11월 3일), ''Byte''(1975년 11월)[40], ''Microcomputer Digest''(1975년 11월)[41]에도 기사가 실렸다.


1975년 8월, 6501 광고가 여러 출판물에 게재되었고, Wescon에서 20USD에 판매될 예정이었다.[42] 9월에는 6501과 6502를 포함하는 광고가 게재되었는데, 6502는 25USD에 불과했다.[43]
MOS 테크놀로지는 Wescon에서 전시장에서 직접 판매가 불가능하다는 것을 알고, 세인트 프랜시스 호텔에 스위트룸을 임대하여 고객에게 프로세서를 판매했다. 칩은 큰 항아리에 보관하여 쉽게 구할 수 있음을 보여주었지만, 실제로는 항아리 아랫부분에 고장난 칩이 있었다.[44] 칩 가격은 20USD와 25USD였고, 설명서는 10USD였다. 사용자들은 문서를 복사하여 정보를 저렴하게 배포할 수 있었다. 초기 데이터 시트에는 오른쪽 회전(ROR) 명령어가 누락되어 있었는데, 이는 초기 칩에서 지원되지 않았기 때문이었다. ''Byte''와 ''EDN'' 리뷰에서는 ROR 명령어 부재를 지적했다. 1976년 5월 데이터 시트에는 ROR 명령어를 포함한 56개의 명령어가 나열되었다.[99][100][101]
2. 6. 모토로라 소송
모토로라는 모스테크놀로지가 NMOS 공정으로 6502를 생산할 때, 핀 배열이 모토로라 제품과 완벽하게 호환된다는 점을 문제삼아 특허 소송을 제기했다. 이로 인해 모스테크놀로지는 1976년 자금난을 겪게 되었고, 결국 코모도어에 인수되어 코모도어 세미컨덕터 그룹(CSG)이 되었다. 하지만, IC 마킹에는 MOS 브랜드가 한동안 사용되었다.2. 7. 컴퓨터 및 게임
6502는 애플 I 마이크로컴퓨터를 시작으로, 1977년에 출시된 코모도어 PET와 애플 II에 사용되었다.[53] 이후 애타리 8비트 컴퓨터, 애콘 아톰, BBC 마이크로,[53] VIC-20 및 가정용/비즈니스용 컴퓨터 등 다양한 설계에 사용되었다. 6502의 직계 후속 제품인 6510은 코모도어 64에 사용된 CPU였다.[54][55]6502는 비디오 게임 분야에서도 중요한 역할을 했다. 1977년 애타리 2600은 8KB 메모리만 주소 지정 가능한 6507을 사용했다. 닌텐도 엔터테인먼트 시스템과 패미컴은 리코의 세컨드 소스 버전 6502를 사용했는데, 2진화 10진수 모드가 없는 대신 사운드 생성, 조이스틱 판독, 스프라이트 목록 DMA를 위한 온다이 하드웨어가 추가되었다. NTSC 콘솔에서는 2A03, PAL 콘솔에서는 2A07이라 불렸다.
코모도어의 모든 8비트 컴퓨터와 플로피 디스크 드라이브에는 6502 또는 변형이 사용되었다. 애타리는 애타리 VCS에 사용된 것과 동일한 6507을 애타리 400/800부터 XEGS까지 모든 8비트 컴퓨터 라인의 810 및 1050 디스크 드라이브에 사용했다.
6502의 CMOS 후속 제품인 WDC 65C02도 가정용 컴퓨터와 비디오 게임 콘솔에 사용되었다. 애플은 애플 IIc부터 시작하여 후속 애플 IIe 변형에서도 이를 사용했다.[56] 터보그래픽스-16에 사용된 Hudson Soft HuC6280 칩은 65C02 코어를 기반으로 했다. 애타리 린스는 Epyx가 설계한 "마이키"[57]라는 맞춤형 칩을 사용했는데, 여기에는 VLSI VL65NC02 라이선스 셀이 포함되어 있다.
| -- | -- | -- | -- | -- |
| -- | -- | -- | -- | |
| -- | -- | |||
| -- | -- | -- |
척 페들(Chuck Peddle), 로드 오르길(Rod Orgill), 그리고 윌 매시스(Will Mathys)가 새로운 프로세서의 초기 아키텍처를 설계했다. 1975년 9월 ''EDN'' 잡지의 한 기사는 이 설계에 대한 다음과 같은 요약을 제시한다.
3. 기술 설명
> MOS 테크놀로지 650X 제품군은 6800 시스템 개발에 참여했던 전 모토로라 직원 8명이 6800을 대체하고 성능을 능가하면서도 가격은 낮추려는 의도적인 시도를 보여줍니다. 6800 프로젝트에서 얻은 경험을 바탕으로 척 페들(Chuck Peddle)이 이끄는 MOS 테크놀로지 팀은 모토로라 CPU에서 다음과 같은 아키텍처 변경을 수행했습니다…
칩 크기 측면에서 주요 변경 사항은 주소 버스 출력에서 삼상 드라이버를 제거한 것이다. 삼상 버스는 '1', '0', 그리고 고임피던스의 세 가지 상태를 갖는다. 마지막 상태는 다른 장치가 버스에 접근할 수 있도록 사용되며, 일반적으로 다중 처리 또는 더 일반적으로 직접 메모리 접근(DMA)에 사용된다. 유용하지만 이 기능은 칩 내부 회로 측면에서 비용이 많이 든다. 6502는 특정 작업에 사용되는 저렴한 컨트롤러로 설계되었고 간단한 장치와 통신하기 때문에 이 기능을 단순히 제거했다. 페들은 이러한 방식의 접근이 필요한 사람은 74158을 사용하여 구현할 수 있다고 제안했다.[33]
다음 주요 차이점은 레지스터를 단순화한 것이다. 우선, 두 개의 누산기 중 하나가 제거되었다. 누산기와 같은 범용 레지스터는 명령어 디코더의 여러 부분에서 액세스해야 하므로 데이터를 저장소로 이동하기 위해 상당한 양의 배선이 필요하다. 두 개의 누산기는 많은 코딩 작업을 더 쉽게 만들지만 칩 설계 자체의 복잡성이 상당히 증가한다.[36] 스택 레지스터를 16비트에서 8비트로 줄임으로써 더 많은 절감 효과를 얻었다. 즉, 스택은 256바이트만 가능해졌는데, 마이크로컨트롤러로서의 의도된 역할에는 충분했다.[36]
16비트 IX 인덱스 레지스터는 X와 Y로 분할되었다. 더 중요한 것은 접근 방식이 변경되었다는 점이다. 6800에서 IX는 명령어와 함께 저장된 8비트 숫자를 오프셋으로 사용하여 주소를 더한 16비트 주소를 저장했다. 6502(그리고 대부분의 다른 동시대 설계)에서는 16비트 기준 주소가 명령어에 저장되고 8비트 X 또는 Y가 추가된다.[41]
마지막으로, 명령어 세트가 단순화되어 디코더와 제어 로직이 단순화되었다. 6800의 원래 72개 명령어 중 56개가 구현되었다. 제거된 명령어에는 6800의 두 누산기 간에 작동하는 명령어와 PDP-11에서 영감을 받은 여러 분기 명령어가 포함된다.[41]
칩의 상위 수준 설계는 트랜지스터와 상호 연결의 도면으로 변환되어야 했다. MOS 테크놀로지에서 "레이아웃"은 색연필과 벨럼 종이를 사용하여 수행되는 매우 수동적인 프로세스였다. 레이아웃은 제작 공정의 각 레이어에 대해 하나씩, 여섯 개의 다른 도면에 수천 개의 다각형 모양으로 구성되었다. 크기 제한을 고려하여 전체 칩 설계를 지속적으로 고려해야 했다. 멘슈(Mensch)와 파이비넨(Paivinen)은 명령어 디코더 작업을 했다. 멘슈, 페들, 오르길은 ALU와 레지스터 작업을 했다. 파티에서 개발된 또 다른 발전은 일부 내부 배선을 공유하여 ALU의 크기를 줄이는 방법이었다.
최선을 다했음에도 불구하고 최종 설계는 5밀 너비가 초과되었다. 최초의 6502 칩은 168×이었으며 면적은 였다. 프로세서의 원래 버전에는 오른쪽 회전(ROR) 기능이 없었으므로 명령어가 원래 문서에서 생략되었다. 다음 설계 반복에서 칩 크기가 줄어들고 오른쪽 회전 기능이 추가되었으며 ROR이 개정된 문서에 포함되었다.[34]
선행 모델인 6800과 마찬가지로, 6502는 매우 적은 수의 레지스터를 가지고 있다.[60]레지스터 설명 A 8비트 누산기 레지스터 P 7비트[61] 상태 레지스터 n 음수 v 오버플로 b 브레이크(스택 값에서만 사용되며, 하드웨어에서는 사용되지 않음[62]) d 10진수 i 인터럽트 비활성화 z 영(0) c 캐리 PC 16비트 프로그램 카운터 S 8비트 스택 포인터 X 8비트 인덱스 레지스터 Y 8비트 인덱스 레지스터
이는 당시 경쟁 제품이었던 Intel 8080과 비교된다. Intel 8080 역시 8비트 누산기와 16비트 프로그램 카운터를 가지고 있지만, 6개의 추가적인 범용 8비트 레지스터(3개의 16비트 포인터로 결합 가능)와 더 큰 16비트 스택 포인터를 가지고 있다.[63]
레지스터 부족을 어느 정도 보완하기 위해, 6502는 전체 메모리를 주소 지정하는 데 필요한 두 바이트 대신 명령어에 한 바이트의 주소를 사용하는 ''제로 페이지'' 어드레싱 모드를 포함한다. 이를 통해 더 짧은 명령어를 사용하여 처음 의 RAM에 빠르게 접근할 수 있다. 예를 들어, 메모리의 값을 누산기의 값에 더하는 명령어는 일반적으로 세 바이트(명령어 하나와 16비트 주소 두 개)가 필요하다. 제로 페이지를 사용하면 이것이 8비트 주소로 줄어들어 전체 명령어 길이가 두 바이트로 줄어들고 따라서 명령어 성능이 향상된다.
스택 주소 공간은 메모리 페이지 `$01`, 즉 주소 범위 `$0100`–`$01FF` (256–511)에 하드웨어적으로 고정되어 있다. 스택에 대한 소프트웨어 접근은 네 개의 암시적 어드레싱 모드 명령어를 통해 이루어지며, 이 명령어의 기능은 누산기 또는 프로세서 상태 레지스터를 푸시하거나 팝(풀)하는 것이다. 같은 스택은 JSR(서브루틴으로 점프) 및 RTS(서브루틴에서 복귀) 명령어를 통한 서브루틴 호출과 인터럽트 처리에도 사용된다.
이 칩은 여러 가지 주소 지정 모드를 효과적으로 사용하여 색인 레지스터와 스택 레지스터를 사용한다. 여기에는 PDP-8에서 볼 수 있는 것과 유사한 빠른 "직접 페이지" 또는 "제로 페이지" 모드가 포함되어 있으며, 8비트 주소 하나로 주소 0~255의 메모리 위치에 액세스한다(주소의 상위 바이트를 가져오는 데 일반적으로 필요한 사이클을 절약). 6502의 코드는 다른 프로세서의 코드가 레지스터를 사용하는 것처럼 제로 페이지를 많이 사용한다. 운영 체제가 있는 일부 6502 기반 마이크로컴퓨터에서는 운영 체제가 제로 페이지의 대부분을 사용하여 사용자에게는 소수의 위치만 남겨둔다.
주소 지정 모드에는 ''암시적''(1바이트 명령어), ''절대''(3바이트), ''색인된 절대''(3바이트), ''색인된 제로 페이지''(2바이트), ''상대''(2바이트), ''누산기''(1바이트), ''간접,x'' 및 ''간접,y''(2바이트), 그리고 ''즉시''(2바이트)가 있다. 절대 모드는 범용 모드이다. 분기 명령어는 분기 후 명령어를 기준으로 부호가 있는 8비트 오프셋을 사용한다. 따라서 −128..127의 수치 범위는 분기 후 명령어에서 128바이트 뒤쪽과 127바이트 앞쪽으로 변환된다(분기 명령어 시작 부분에서 126바이트 뒤쪽과 129바이트 앞쪽). 누산기 모드는 누산기 레지스터에서 작동하며 피연산자 데이터가 필요하지 않다. 즉시 모드는 8비트 리터럴 피연산자를 사용한다.
간접 주소 지정 모드는 배열 처리 및 기타 루프에 유용하다. 5/6 사이클 "(간접),y" 모드에서 8비트 Y 레지스터는 opcode 다음에 있는 단일 바이트로 위치가 지정되는 제로 페이지에서 읽은 16비트 기본 주소에 더해진다. 따라서 Y 레지스터는 실제 ''인덱스''를 보유하는 데 사용된다는 점에서 ''인덱스'' 레지스터이다(6800의 X 레지스터와는 대조적으로, 여기서는 기본 주소가 직접 저장되고 즉시 오프셋을 추가할 수 있음). 배열을 바이트 단위로 순회하기 위해 인덱스 레지스터를 증가시키는 데는 2사이클만 추가로 소요된다. 덜 자주 사용되는 "(간접,x)" 모드에서는 연산의 유효 주소가 명령어의 두 번째 바이트를 X 레지스터의 내용에 더하여 형성된 제로 페이지 주소에서 찾는다. 색인된 모드를 사용하면 제로 페이지는 최대 128개의 추가적인(하지만 매우 느린) 주소 레지스터 집합 역할을 한다.
6502는 2진수 또는 2진화 10진수 코드로 덧셈과 뺄셈을 수행할 수 있다. SED(D 플래그 설정) 명령어로 CPU를 BCD 모드로 설정하면 10진수 연산이 수행되어 $99 + $01은 $00이 되고 캐리(C) 플래그가 설정된다. 2진 모드(CLD, D 플래그 초기화)에서는 동일한 연산의 결과가 $9A가 되고 캐리 플래그가 초기화된다. Atari BASIC을 제외하고는 가정용 컴퓨터 응용 프로그램에서 BCD 모드는 거의 사용되지 않았다.
Hello world! 문서를 참조하여 6502 어셈블리어의 간단하지만 특징적인 예제를 확인하십시오.
6502 명령어 연산 코드(opcodes)는 8비트 길이이며, 일반적인 형태는 AAABBBCC이다. 여기서 AAA와 CC는 opcode를 정의하고, BBB는 주소 지정 모드를 정의한다.[64] 예를 들어, ORA 명령어는 누산기의 비트와 다른 값에 대한 비트별 OR 연산을 수행한다. 명령어 opcode는 000bbb01 형태이며, bbb는 즉시 모드 값(상수)에 대해 010, 제로 페이지 고정 주소에 대해 001, 절대 주소에 대해 011 등이 될 수 있다.[64] 이 패턴은 예외가 있으므로 보편적이지는 않지만, 대부분의 명령어에 대한 어셈블리 니모닉으로 opcode 값을 쉽게 변환할 수 있도록 하며, 특수 목적 코드를 사용하여 예외적인 경우를 처리한다.[64]
8비트 패턴을 사용하여 사용할 수 있는 256개의 opcode 중 원래 6502는 151개를 사용하며, (아마도 여러 개의) 주소 지정 모드를 가진 56개의 명령어로 구성되어 있다. 명령어와 주소 지정 모드에 따라 opcode는 피연산자에 대해 0, 1 또는 2개의 추가 바이트가 필요할 수 있다. 따라서 6502 기계 명령어의 길이는 1바이트에서 3바이트까지 다양하다.[65][66] 피연산자는 6502의 관습적인 리틀 엔디언 형식으로 저장된다.
65C816은 6502의 16비트 CMOS 후속 제품으로, 24비트 주소 지정도 지원하며, 이로 인해 명령어는 리틀 엔디언 형식으로 정렬된 3바이트 피연산자를 사용하여 어셈블됩니다.
나머지 105개의 opcode는 정의되지 않았다. 원래 설계에서 하위 4비트(니블)가 3, 7, B 또는 F인 명령어는 사용되지 않았으므로 향후 확장을 위한 공간을 제공했다. 마찬가지로, $2x 열에는 LDX #''상수'' 하나의 항목만 있었습니다. 나머지 25개의 빈 슬롯은 분산되었다. 일부 빈 슬롯은 65C02에서 새로운 명령어와 새로운 주소 지정 모드를 사용한 기존 명령어의 변형을 제공하는 데 사용되었다. $Fx 명령어는 처음에 타사 공급업체가 자체 명령어를 추가할 수 있도록 비워 두었지만, 나중 버전의 65C02에서는 Rockwell Semiconductor가 개발한 일련의 비트 조작 명령어가 표준화되었다.
6502 어셈블리어 명령어는 세 글자의 명령어 니모닉과 그 뒤에 오는 피연산자로 구성된다. 별도의 피연산자를 사용하지 않고 어드레싱 모드에 따라 단일 레지스터를 대상으로 하는 명령어는 명령어 니모닉에 대상 레지스터를 결합하므로, 어셈블러는 X 레지스터를 증가시키기 위해 INC X 대신 INX를 사용한다.6502 명령어 집합의 opcode 행렬 주소 지정 모드: – 누산기, – 즉시, – 제로 페이지, – 절대, – 간접, 'X' – X 레지스터 색인, 'Y' – Y 레지스터 색인, – 상대 상위 니블 하위 니블 0 1 2 4 5 6 8 9 A C D E 0 BRK ORA (ind,X) ORA zpg ASL zpg PHP ORA # ASL A ORA abs ASL abs 1 BPL rel ORA (ind),Y ORA zpg,X ASL zpg,X CLC ORA abs,Y ORA abs,X ASL abs,X 2 JSR abs AND (ind,X) BIT zpg AND zpg ROL zpg PLP AND # ROL A BIT abs AND abs ROL abs 3 BMI rel AND (ind),Y AND zpg,X ROL zpg,X SEC AND abs,Y AND abs,X ROL abs,X 4 RTI EOR (ind,X) EOR zpg LSR zpg PHA EOR # LSR A JMP abs EOR abs LSR abs 5 BVC rel EOR (ind),Y EOR zpg,X LSR zpg,X CLI EOR abs,Y EOR abs,X LSR abs,X 6 RTS ADC (ind,X) ADC zpg ROR zpg PLA ADC # ROR A JMP (ind) ADC abs ROR abs 7 BVS rel ADC (ind),Y ADC zpg,X ROR zpg,X SEI ADC abs,Y ADC abs,X ROR abs,X 8 STA (ind,X) STY zpg STA zpg STX zpg DEY TXA STY abs STA abs STX abs 9 BCC rel STA (ind),Y STY zpg,X STA zpg,X STX zpg,Y TYA STA abs,Y TXS STA abs,X A LDY # LDA (ind,X) LDX # LDY zpg LDA zpg LDX zpg TAY LDA # TAX LDY abs LDA abs LDX abs B BCS rel LDA (ind),Y LDY zpg,X LDA zpg,X LDX zpg,Y CLV LDA abs,Y TSX LDY abs,X LDA abs,X LDX abs,Y C CPY # CMP (ind,X) CPY zpg CMP zpg DEC zpg INY CMP # DEX CPY abs CMP abs DEC abs D BNE rel CMP (ind),Y CMP zpg,X DEC zpg,X CLD CMP abs,Y CMP abs,X DEC abs,X E CPX # SBC (ind,X) CPX zpg SBC zpg INC zpg INX SBC # NOP CPX abs SBC abs INC abs F BEQ rel SBC (ind),Y SBC zpg,X INC zpg,X SED SBC abs,Y SBC abs,X INC abs,X 6502 명령어 집합에서 정의되지 않은 opcode (예: F2) 및 하위 니블이 3, 7, B 및 F인 모든 opcode.
다음은 상위 문자를 소문자로 변환하면서 널 종료 문자열(null-terminated string)을 한 위치에서 다른 위치로 복사하는 `TOLOWER`라는 서브루틴을 위한 6502 어셈블리어 소스 코드이다. 복사되는 문자열은 "소스(source)"이고, 변환된 소스가 저장되는 문자열은 "대상(destination)"이다.
; TOLOWER:
;
; 널 종료 문자열을 모두 소문자로 변환합니다.
; 최대 문자열 길이는 널 종료 문자를 포함하여 255자입니다.
;
; 매개변수:
;
; SRC – 소스 문자열 주소
; DST – 대상 문자열 주소
;
ORG $0080
;
SRC .WORD $0400 ; 소스 문자열 포인터
DST .WORD $0500 ; 대상 문자열 포인터
;
ORG $0600 ; 실행 시작 주소
;
TOLOWER LDY #$00 ; 시작 인덱스
;
LOOP LDA (SRC),Y ; 소스 문자열에서 가져오기
BEQ DONE ; 문자열 끝
;
CMP #'A' ; 대문자 알파벳보다 작으면...
BCC SKIP ; 변경 없이 복사
;
CMP #'Z'+1 ; 대문자 알파벳보다 크면...
BCS SKIP ; 변경 없이 복사
;
ORA #%00100000 ; 소문자로 변환
;
SKIP STA (DST),Y ; 대상 문자열에 저장
INY ; 인덱스 증가
BNE LOOP ; 다음 문자
;
; NOTE: Y가 래핑되면 대상 문자열은 정의되지 않은 상태로 남습니다. 호출 함수에 이를 알리기 위해 캐리를 설정합니다.
;
SEC ; 문자열이 너무 길다는 오류를 보고하고...
RTS ; 호출자에게 반환
;
DONE STA (DST),Y ; 대상 문자열 종료
CLC ; 변환 완료를 보고하고...
RTS ; 호출자에게 반환
;
.END
프로세서의 비마스킹 가능 인터럽트(NMI) 입력은 에지 감지 방식이다. 즉, 신호의 레벨이 아닌 하강 에지에 의해 인터럽트가 발생한다. 이 기능의 의미는 와이어드 OR 인터럽트 회로가 쉽게 지원되지 않는다는 것이다. 그러나 이는 하드웨어가 NMI 입력을 다시 비활성화할 때까지(종종 NMI 인터럽트 핸들러의 제어하에) 중첩된 NMI 인터럽트가 발생하는 것을 방지한다.
NMI와 IRQ(마스킹 가능) 하드웨어 인터럽트 라인이 동시에 활성화되면 IRQ는 무시된다. 그러나 NMI 처리 후에도 IRQ 라인이 활성화된 상태로 유지되면 프로세서는 IRQ에 즉시 응답한다. IRQ는 레벨 감지 방식이기 때문이다. 따라서 6502 설계에는 일종의 내장 인터럽트 우선 순위가 설정되었다.
B 플래그는 6502가 NMI 에지 검출기의 출력과 IRQ 입력을 주기적으로 샘플링하여 설정된다. IRQ 신호가 낮게 동작하는 것은 I 플래그에 의해 IRQ가 허용되는 경우에만 인식된다. 이러한 방식으로 NMI 요청 또는 (마스킹 가능) IRQ가 감지되면 B 플래그는 0으로 설정되고 프로세서가 프로그램 카운터를 기반으로 다음 명령어를 실행하는 대신 BRK 명령어를 다음에 실행하도록 한다.[67][68]
그런 다음 BRK 명령어는 B 플래그 비트를 0으로 설정하여 프로세서 상태를 스택에 푸시한다. 실행이 끝나면 BRK 명령어는 B 플래그의 값을 1로 재설정한다. 이것이 B 플래그를 수정할 수 있는 유일한 방법이다. BRK 명령어가 아닌 명령어가 프로세서 상태의 일부로 B 플래그를 스택에 푸시하는 경우[69] B 플래그는 항상 값이 1이다.
SO 입력 핀에서 하이에서 로우로의 전이가 발생하면 프로세서의 오버플로우 상태 비트가 설정된다. 이것은 외부 하드웨어에 대한 빠른 응답에 사용할 수 있다. 예를 들어, 고속 폴링 장치 드라이버는 오버플로우가 SO 하강 전이에 의해 설정될 때까지 자체적으로 분기하는 Branch-on-oVerflow-Clear(BVC) 명령어를 사용하여 3 사이클 만에 하드웨어를 한 번 폴링할 수 있다. 코모도어 1541 및 기타 코모도어 플로피 디스크 드라이브는 이 기술을 사용하여 직렬화 장치가 디스크 데이터의 다른 바이트를 전송할 준비가 되었는지 감지한다. 시스템 하드웨어 및 소프트웨어 설계는 산술 처리 중에 SO가 발생하지 않고 계산을 방해하지 않도록 해야 한다.
6502는 프로그래밍 시 고려해야 할 몇 가지 하드웨어 버그와 특징이 있었다.
참조
[1]
웹사이트
The MOS 6502 and the Best Layout Guy in the World
http://research.swtc[...]
swtch.com
2011-01-03
[2]
웹사이트
MOnSter6502 A complete, working discrete transistors (i.e. not integrated all on a single chip) replica of the classic MOS 6502 microprocessor
http://monster6502.c[...]
monster6502.com
2017-01-01
[3]
인터뷰
Interview with William Mensch
https://exhibits.sta[...]
Silicon Genesis Project, Stanford University Libraries
1995-10-09
[4]
웹사이트
Western Design Center (WDC) Home of 65xx Microprocessor Technology
http://www.westernde[...]
[5]
간행물
Motorola Sues MOS Technology
http://www.bitsavers[...]
Microcomputer Associates
1975-12-01
[6]
논문
MOS-device modeling for computer implementation
IEEE
1973-11-01
[7]
뉴스
Motorola joins microprocessor race with 8-bit entry
McGraw-Hill
1974-03-07
[8]
서적
Motorola 6800 Oral History
2008-01-01
[9]
특허
MOS DC Voltage booster circuit
https://patents.goog[...]
[10]
특허
Chip topography for MOS integrated circuitry microprocessor chip
https://patents.goog[...]
[11]
서적
Motorola 6800 Oral History
2008-01-01
[12]
문서
Mensch Oral History
1995-01-01
[13]
특허
Chip topography for MOS interface circuit
https://patents.goog[...]
[14]
간행물
The microprocessor first two decades: The way it was
Cahners Publishing
1988-10-27
[15]
특허
Asynchronous communication interface adaptor
https://patents.goog[...]
[16]
간행물
They stay out front with Motorola's M6800 Family
http://commons.wikim[...]
McGraw-Hill
1976-08-05
[17]
서적
Motorola 6800 Oral History
2008-01-01
[18]
간행물
It's the total product family
http://commons.wikim[...]
McGraw Hill
1975-01-09
[19]
서적
Motorola 6800 Oral History
2008-01-01
[20]
간행물
Motorola microprocessor set is 1 MHz n-MOS
1974-11-01
[21]
서적
A Revolution in Progress: A History to Date of Intel
http://www.intel.com[...]
Intel Corporation
[22]
뉴스
Motorola mounts M6800 drive
McGraw-Hill
1975-04-17
[23]
서적
Bagnall
2010-01-01
[24]
뉴스
Motorola seeks to end skid
McGraw-Hill
1975-11-13
[25]
서적
Bagnall
2010-01-01
[26]
간행물
The First Single Chip Scientific Calculator Arrays.
http://commons.wikim[...]
McGraw-Hill
1974-11-14
[27]
잡지
Q&A With Co-Creator of the 6502 Processor
https://spectrum.iee[...]
2021-09-16
[28]
웹사이트
An Introduction to Semiconductor Physics, Technology, and Industry
https://www.anandtec[...]
2014-10-09
[29]
서적
Motorola 6800 Oral History
2008-01-01
[30]
웹사이트
8080A microprocessor – DIP 40 package
http://www.cpu-world[...]
[31]
웹사이트
Moore's Law Milestones
https://spectrum.iee[...]
2015-04-30
[32]
서적
Bagnall
2010-01-01
[33]
서적
Games vs. Hardware. The History of PC video games: The 80's
2014-01-01
[34]
이미지
MCS650x Instruction Set
[35]
웹사이트
Measuring the ROR Bug in the Early MOS 6502 – pagetable.com
https://www.pagetabl[...]
[36]
웹사이트
How to test a ceramic 6502 for the ROR bug? | Applefritter
https://www.applefri[...]
2023-02-25
[37]
웹사이트
The 6502 Rotate Right Myth
https://www.youtube.[...]
2023-02-25
[38]
논문
Microprocessor line offers 4, 8, 16 bits
McGraw-Hill
1975-07-24
[39]
논문
Does the Country Need A Good $20 Microprocessor?
https://web.archive.[...]
CMP Publications
2008-02-05
[40]
논문
Son of Motorola (or the $20 CPU Chip)
Green Publishing
1975-11
[41]
논문
3rd Generation Microprocessor
https://web.archive.[...]
Microcomputer Associates
2009-11-27
[42]
논문
MOS 6501 Microprocessor beats 'em all
McGraw-Hill
1975-08-07
[43]
논문
MOS 6502 the second of a low cost high performance microprocessor family
http://commons.wikim[...]
IEEE Computer Society
2012-06-04
[44]
서적
MOS MICROCOMPUTERS PROGRAMMING MANUAL
2010
[45]
논문
Easiest-to-use microprocessor
https://commons.wiki[...]
McGraw-Hill
2015-11-20
[46]
논문
All this and unbundled $69 microprocessor
http://commons.wikim[...]
McGraw-Hill
2010-08-08
[47]
논문
News briefs: Motorola seeks to stop microprocessor foe
McGraw-Hill
1975-11-13
[48]
문서
Motorola Patents on the 6800 microprocessor family
[49]
서적
2010
[50]
논문
Motorola, MOS Technology settle patent suit
McGraw-Hill
1976-04-01
[51]
서적
2010
[52]
논문
Mergers and Acquisitions
Cahners
1976-11
[53]
뉴스
Intel's victims: Eight would-be giant killers
https://archive.toda[...]
2010-12-04
[54]
웹사이트
Personal Computer Market Share: 1975-2004
http://www.jeremyrei[...]
2009-07-17
[55]
웹사이트
How many Commodore 64 computers were sold?
https://web.archive.[...]
2011-02-01
[56]
웹사이트
Apple IIe Enhancement Kit - Peripheral - Computing History
https://www.computin[...]
2023-10-23
[57]
웹사이트
4. CPU/ROM
https://www.monlynx.[...]
2023-10-23
[58]
웹사이트
Big Things in Small Packages
https://web.archive.[...]
Sun Microelectronics
1999-03
[59]
웹사이트
How to implement bus sharing / DMA on a 6502 system
https://retrocomputi[...]
2020-09-30
[60]
서적
MOS MICROCOMPUTERS PROGRAMMING MANUAL
MOS TECHNOLOGY, INC.
1976-01
[61]
서적
Microprocessor Technology
https://books.google[...]
Routledge
2012-08-21
[62]
웹사이트
Status flags
https://www.nesdev.o[...]
2024-06-11
[63]
웹사이트
8080A/8080A-1/8080A-2 8-Bit N Channel Microprocessor
http://www.elektroni[...]
Intel
2021-11-16
[64]
웹사이트
The 6502/65C02/65C816 Instruction Set Decoded
http://nparker.llx.c[...]
2019-07-16
[65]
웹사이트
6502 Instruction Set
http://www.masswerk.[...]
[66]
웹사이트
NMOS 6502 Opcodes
http://www.6502.org/[...]
[67]
서적
Breaking NES Book – 6502 Core
https://github.com/e[...]
2022-06-24
[68]
웹사이트
6502 BRK and B bit
https://web.archive.[...]
[69]
웹사이트
FLAGS
https://github.com/o[...]
2021-05-15
[70]
서적
ATARI 1200 XL HOME COMPUTER FIELD SERVICE MANUAL
ATARI
1983-02
[71]
웹사이트
FAQ 400 800 XL XE: What are SALLY, ANTIC, CTIA/GTIA/FGTIA, POKEY, and FREDDIE?
http://www.atarimani[...]
[72]
간행물
1982 MOS Technology Data Catalog
[73]
웹사이트
AtariAge: A2600 clone, 6591 chip pinout
https://atariage.com[...]
2015-08-03
[74]
웹사이트
Hackaday: The teensiest Atari 2600 ever
https://hackaday.com[...]
2012-04-07
[75]
웹사이트
Rockwell R6511Q
http://www.cpu-world[...]
2020-04-30
[76]
웹사이트
Rockwell R6500/11, R6500/12 and R6500/15 One-Chip Microcomputers
https://datasheetspd[...]
1987-06-07
[77]
논문
The R65F11 and F68K Single-Chip Forth Computers
http://soton.mpefort[...]
1984
[78]
논문
A Computerized Corrosion Monitoring System
http://www.forth.org[...]
1986
[79]
서적
Embedded systems: 1990 Rochester Forth Conference: June 12 – 16th, 1990 University of Rochester
https://books.google[...]
[80]
간행물
RSC-Forth User's Manual
http://www.smallestp[...]
Rockwell
1983
[81]
웹사이트
Rockwell R65F11 R65F12 Forth Based Microcomputers
http://archive.6502.[...]
1987-06
[82]
서적
Programming the 6502
[83]
웹사이트
Arquivo.pt
http://www.datasheet[...]
2014-10-26
[84]
웹사이트
rockwell :: dataBooks :: 1985 Rockwell Data Book
https://archive.org/[...]
[85]
웹사이트
East-European Home-Computer: Bulgaria
http://www.homecompu[...]
[86]
웹사이트
Hardware – MOS 7501/8501
http://plus4world.po[...]
[87]
웹사이트
CPU 7501 / 8501
https://ist.uwaterlo[...]
[88]
간행물
Service Manual C-128/C128D Computer
Commodore Business Machines
1987-11
[89]
웹사이트
IC Datasheet: 1988 VTI ASIC
http://archive.org/d[...]
[90]
잡지
Add a Trap Vector for Unimplemented 6502 Opcodes
http://archive.6502.[...]
1979-01
[91]
잡지
The 6502 Gets Microprogrammable Instructions
https://archive.org/[...]
1980-10
[92]
웹사이트
65c02, 6502, 65816 ??? CPU sells but who's buying...
http://www.s-direktn[...]
1997-06-19
[93]
서적
Atari Roots – A Guide To Atari Assembly Language
http://www.atariarch[...]
Datamost, Incorporated
[94]
서적
6500 Series Hardware Manual; 2nd Ed
MOS Technology, INC.
1976-01
[95]
웹사이트
The MOS 6502 and the Best Layout Guy in the World
https://research.swt[...]
swtch.com
2011-01-03
[96]
웹사이트
MOnSter6502
https://monster6502.[...]
monster6502.com
2017
[97]
웹사이트
上村雅之さん 大いに語る。 ファミリーコンピュータ インタビュー(前編)(2013年10月号より)
https://www.ndw.jp/p[...]
アンビット
2018-07-21
[98]
웹사이트
【任天堂「ファミコン」はこうして生まれた】第7回:業務用機の仕様を家庭用に、LSIの開発から着手(3/3)
http://trendy.nikkei[...]
日経BP
2008-10-03
[99]
웹사이트
MOS Technology 6502 - Bugs and Quirks
https://www.liquisea[...]
[100]
웹사이트
Measuring the ROR Bug in the Early MOS 6502
https://www.pagetabl[...]
[101]
문서
1975년 8월의 데이터시트에서는 ROR 명령을 제외한 55개의 명령이 기재되어 있으며, 1976년 5월의 데이터시트에서는 ROR 명령을 포함한 56개의 명령이 기재되어 있다.
[102]
웹사이트
Which Machines Do Computer Architects Admire?
http://www.cs.clemso[...]
2001-10
[103]
웹사이트
Wilson, Sophie oral history : 2012 fellow - 102746190
https://www.computer[...]
2012-01-31
[104]
웹인용
The MOS 6502 and the Best Layout Guy in the World
http://research.swtc[...]
swtch.com
2011-01-03
[105]
웹인용
MOnSter6502 A complete, working discrete transistors (i.e. not integrated all on a single chip) replica of the classic MOS 6502 microprocessor
http://monster6502.c[...]
monster6502.com
2017
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com










